package com.dmz.workflow.service;

import com.dmz.workflow.param.*;
import com.dmz.workflow.vo.PeopleMaintainMemberVO;
import com.dmz.workflow.vo.ProcessMatrixMemberVO;
import com.dmz.workflow.vo.WorkflowMatrixVO;
import com.dmz.workflow.vo.WorkflowProcessMatrixVO;
import com.echronos.commons.Result;
import com.echronos.workflow.param.*;

import java.util.List;

/**
 * @author: zhouguoqing
 * @date: 2021/09/28/15:49
 */

public interface ProcessMatrixService {

    /**
     * 获取矩阵角色列表
     * @param companyId
     * @return
     */
    Result<List<WorkflowProcessMatrixVO>> getMatrixRoleList(Integer companyId);

    /**
     * 矩阵角色新增
     * @param param
     * @return
     */
    Result<WorkflowProcessMatrixVO> addMatrixRole(AddMatrixRoleParam param);

    /**
     * 矩阵角色修改
     * @param param
     * @return
     */
    Result<WorkflowProcessMatrixVO> saveMatrixRole(SaveMatrixRoleParam param);

    /**
     * 获取矩阵角色维护
     * @param matrixId
     * @return
     */
    Result<WorkflowMatrixVO> getMatrixRoleMaintainList(Integer matrixId);

    /**
     * 保存矩阵角色维护
     * @param param
     * @return
     */
    Result<WorkflowMatrixVO> saveMatrixRoleMaintain(SaveMatrixRoleMaintainParam param);

    /**
     * 新增矩阵人员维护
     * @param param
     * @return
     */
    Result<ProcessMatrixMemberVO> addMatrixPeopleMaintain(AddMatrixPeopleMaintainParam param);

    /**
     * 矩阵人员
     * @param roleMember
     * @return
     */
    List<PeopleMaintainMemberVO> jsonTransitionPeople(String roleMember);

    /**
     * 获取矩阵人员维护
     * @param param
     * @return
     */
    Result<List<ProcessMatrixMemberVO>> getMatrixPeopleMaintain(BaseMatrixPageParam param);

    /**
     * 矩阵人员维护修改
     * @param param
     * @return
     */
    Result<ProcessMatrixMemberVO> saveMatrixPeopleMaintain(SaveMatrixPeopleMaintainParam param);

    /**
     * 矩阵人员维护删除
     * @param processMatrixIds
     * @return
     */
    Result<Boolean> deleteMatrixPeopleMaintain(List<Integer> processMatrixIds);

    /**
     * 根据矩阵主键id、角色名称获取该角色下的所有人员维护
     * @param matrixId
     * @param roleName
     * @return
     */
    Result<List<PeopleMaintainMemberParam>> getMatrixRolePeopleMaintain(Integer matrixId,String roleName);

}
